博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言爬虫项目将结果写入MySql数据库
阅读量:2492 次
发布时间:2019-05-11

本文共 2233 字,大约阅读时间需要 7 分钟。

来源于Google资深工程师深度讲解Go语言

package mainimport (	"fmt"	"io/ioutil"	"net/http")const url = "http://www.zhenai.com/zhenghun"func main() {	//发送get请求	resp, err := http.Get(url)	if err != nil {		panic(err)	}	//关闭通道	defer resp.Body.Close()	//判断状态	if resp.StatusCode != http.StatusOK {		fmt.Errorf("StatusCode:%v \n", http.StatusOK)	}	//输出结果	all, err := ioutil.ReadAll(resp.Body)	if err != nil {		fmt.Errorf("ReadAll: %s ", err)	}	fmt.Printf("%s\n",all)}

可以将整个html页面爬取下来

正则表达式处理

package mainimport (	"fmt"	"io/ioutil"	"net/http"	"regexp")//const url = "http://www.baidu.com"const url = "http://www.zhenai.com/zhenghun"func main() {	//发送get请求	resp, err := http.Get(url)	if err != nil {		panic(err)	}	//关闭通道	defer resp.Body.Close()	//判断状态	if resp.StatusCode != http.StatusOK {		fmt.Errorf("StatusCode:%v \n", http.StatusOK)	}	//输出结果	all, err := ioutil.ReadAll(resp.Body)	if err != nil {		fmt.Errorf("ReadAll: %s ", err)	}	printListCity(all)}// 获取城市,urlconst cityListRe = `]*>([^<]*)`func printListCity(contents []byte) {	rg := regexp.MustCompile(cityListRe)	allSubmatch := rg.FindAllSubmatch(contents, -1)	for _, m := range allSubmatch {		fmt.Printf("%s\n ", m[1])		fmt.Printf("%s\n ", m[2])	}}

结果

http://www.zhenai.com/zhenghun/zhuhai 珠海 http://www.zhenai.com/zhenghun/zhumadian 驻马店 http://www.zhenai.com/zhenghun/zhuzhou 株洲 http://www.zhenai.com/zhenghun/zibo 淄博 http://www.zhenai.com/zhenghun/zigong 自贡 http://www.zhenai.com/zhenghun/ziyang1 资阳 http://www.zhenai.com/zhenghun/zunyi 遵义

将结果存入数据库

  • 注意的是id为自增长的主键,不参与golang语言的表结构展示,特别是在插入时,不应该算入在内
const cityListRe = `]*>([^<]*)`func mySql(contents []byte) {	//用户名:密码^@tcp(地址:3306)/数据库	db, err := sql.Open("mysql", "root:Kou123$%^@tcp(39.107.87.114:3306)/zhenai?charset=utf8")	if err!=nil {		fmt.Println(err)		return	}	//表结构	type info struct {		city string `db:"city"`		url string `db:"url"`	}	//查询表	rows,err:=db.Query("SELECT * FROM city_url_id")	//遍历打印	for rows.Next(){		var s info		err=rows.Scan(&s.city,&s.url,)	}		//执行MySql语句	rg := regexp.MustCompile(cityListRe)	allSubmatch := rg.FindAllSubmatch(contents, -1)	for _, m := range allSubmatch {		//fmt.Printf("%s\n ", m[1])		//fmt.Printf("%s\n ", m[2])		//插入语句		db.Exec("INSERT INTO city_url_id(city,url)VALUES (?,?)",  m[1], m[2])	}	rows.Close()}

在这里插入图片描述

转载地址:http://koorb.baihongyu.com/

你可能感兴趣的文章
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
关闭selinx nginx无法使用代理
查看>>
shell 脚本部署项目
查看>>
spring cloud zuul网关上传大文件
查看>>
springboot+mybatis日志显示SQL
查看>>
工作流中文乱码问题解决
查看>>
maven打包本地依赖包
查看>>
spring boot jpa 实现拦截器
查看>>
jenkins + maven+ gitlab 自动化部署
查看>>
Pull Request流程
查看>>
Lambda 表达式
查看>>
函数式数据处理(一)--流
查看>>
java 流使用
查看>>
java 用流收集数据
查看>>
java并行流
查看>>
CompletableFuture 组合式异步编程
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
JVM内存管理及GC机制
查看>>